package q205_isIsomorphic;

import java.util.HashMap;
import java.util.Map;


public class Solution {
    /*
    对于相同映射
    存在这样一种判断
    例如在构建paper - title这样的map
    p - t这样的判断是绑定的
    也就是说 在字符串中只出现了一次的字符 可以任意映射 而只要出现了两次及以上 就必须具有一样的映射
    因此我们利用两个map记录对应的映射
    * 使用两个的原因是 两者必须形成一种对称的映射 否则如 badc baba 两者 只使用s2t Map 则能正常通过
     */
    public boolean isIsomorphic(String s, String t) {
        Map<Character, Character> s2t = new HashMap<>();
        Map<Character, Character> t2s = new HashMap<>();
        int len = s.length();
        for (int i = 0; i < len; ++i) {
            char x = s.charAt(i), y = t.charAt(i);
            if ((s2t.containsKey(x) && s2t.get(x) != y) || (t2s.containsKey(y) && t2s.get(y) != x)) {
                return false;
            }
            s2t.put(x, y);
            t2s.put(y, x);
        }
        return true;

    }
}
